home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 19 / Mac Magazin and MacEasy Magazine CD - Issue 19.iso / Wissenschaft & Technik / WASTE 1.2a5 Distribution / Change History next >
Text File  |  1996-01-15  |  12KB  |  154 lines

  1.  
  2. New in WASTE 1.2a5
  3.  
  4. Bug Fixes
  5.  
  6. • Fixed a bug in _WEIntelligentPaste inadvertently introduced in version 1.2a4 (thanks to Andy Maloney).
  7. • Fixed a bug in _WECopyStyle which affected the condensed and extended styles (thanks to Ed van Zon).
  8. • WEGetChar would previously return negative values for character codes in the range 128 to 255.  Fixed.
  9. • The declarations for uppWEWordBreakProcInfo, uppWECharByteProcInfo and uppWECharTypeProcInfo (and thus the corresponding NewProc and CallProc macros) were incorrect, and the corresponding WEGetInfo/WESetInfo selectors were missing from the public WASTE header.  Fixed (thanks to Todd Grinnell).
  10. • Added some missing stuff to WEPascalPPCGlue.p.
  11.  
  12. Other Changes
  13.  
  14. • Corrected some minor bugs in the demo application.
  15. • Recompiled the demo with CodeWarrior 8.
  16. • Updated the Symantec project file to version 8.0.3 of SC++.
  17. • Updated Internet Config files to version 1.2 of IC.
  18. • Updated Marco’s email address and mailing list information.
  19. • WASTE_KURTHS_OPTION_ARROWS is now TRUE by default.
  20.  
  21.  
  22. New in WASTE 1.2a4
  23.  
  24. Bug Fixes
  25.  
  26. • “SOUP” handles are defined as a tightly concatenated sequence of descriptor + object data + descriptor + object data etc.  Unfortunately, this means that if one of the object data blocks is an odd number of bytes, the following descriptor is misaligned.  In fact, a couple of WASTE routines which directly access descriptors within soups crashed with an address error on 68000 machines (but not on 68020+ and PPC CPUs, which allow misaligned accesses to memory, albeit with a performance penalty).
  27. If caught early, this design flaw could have been fixed by adding some extra padding bytes in situations like this, but changing the SOUP format now would break existing applications, so I chose to fix this bug by modifying the relevant routines to use BlockMoveData to access descriptors within soup handles.
  28.  
  29. • Added a line to _WEHandleUpdateActiveInputArea which is supposed to fix an incompatibility with a commercial input method for KanjiTalk and possibly other input methods as well.  Thanks to Kiyoshi Gomasaki for reporting the problem and suggesting the fix.
  30.  
  31. • WEScroll would sometimes incorrectly redraw the text if you passed values larger than 32,767 in vOffset, since the Toolbox call ScrollRect takes short (16-bit) offsets, while WEScroll deals with long (32-bit) quantities.  Now WEScroll uses a different algorithm when passed large offsets, which fixes this bug and allows for smoother scrolling.  Thanks to Lee Fyock for reporting the bug and for suggesting the fix.
  32.  
  33. • WEUpdate was slightly retouched to prevent a rare cosmetic problem.
  34.  
  35. • In previous versions of WASTE, calling WEUseText on a non-empty instance was not supported and could cause crashes.  Now it should be safe to call WEUseText at any time.
  36.  
  37. • The built-in click loop routine will no longer auto-scroll the text in inactive WE instances.
  38.  
  39. • The function prototype for WEGetLineRange in WASTE.h was wrong.  Thanks to Romain Vignes and Dan Crevier for pointing this out.
  40.  
  41. Other Changes
  42.  
  43. • Handling of URL resolution has been improved.  Now WASTE will let you pass an existing selection to Internet Config without forcing a re-parse.
  44. Additionally, now you can associate “URL hints” to WASTE instances using WESetInfo with the weURLHint selector.  URL hints are strings used by Internet Config to parse “slack” (scheme-less) URLs like “xxx@yyy”: refer to the Internet Config programmer’s documentation for more details.
  45. Here’s some sample code that sets the URL hint of a WASTE instance to “mailto”:
  46.  
  47. OSErr MyWESetDefaultURLHint(WEReference we)
  48. {
  49.     static StringHandle hint = NewString("\pmailto");
  50.     
  51.     return WESetInfo(weURLHint, &hint, we);
  52. }
  53.  
  54. Thanks to Stefan Kurth for suggesting these changes.
  55.  
  56. • I incorporated some code by Jud Spencer which prevents style information from being applied when pasting or dragging text into a WASTE instance if a certain feature flag (weFMonoStyled) is enabled.  This flag also forces WECopy to copy only the TEXT info to the desk scrap.
  57.  
  58. • I incorporated some code by Stefan Kurth which implements the option + left/right arrow key combinations according to Apple’s Human Interface Guidelines.  The old code is still present, however, and you can choose your favorite implementation by setting a compiler variable (WASTE_KURTHS_OPTION_ARROWS) in your prefix file.
  59.  
  60. • The mode parameter in WESetStyle and WEContinuousStyle is now declared as WEStyleMode (= unsigned short), rather than short.
  61.  
  62.  
  63. New in WASTE 1.2a3
  64.  
  65. Bug Fixes
  66.  
  67. • Fixed a bug reported by Tom Bender that had been lurking in WASTE since the very first release.  To see what the bug was, try this in an older version of the WASTE Demo: type “foo bar”, double-click “foo” to select it, and type “moof” to replace “foo”.  Now the caret is at the end of the word “moof”.  Shift-click at the end of “bar”.  See what happened?  “moof” was incorrectly included in the selection.
  68.  
  69. • With earlier versions of WASTE it was sometimes possible to start a drag with the cursor incorrectly set to an I-beam.  To see how, try this in an older version of the WASTE Demo: type “sometimes”, double-click “some”, quickly move the cursor over “times” and click again before the cursor turns into an arrow.  Now WASTE always turns the cursor into an arrow before starting a drag.
  70.  
  71. API Changes
  72.  
  73. • The flags parameter in WENew is now an unsigned long quantity, to allow for up to 32 features to be set independently.
  74.  
  75. • Following a suggestion by Dan Crevier, a new feature flag has been added: weFInhibitRedraw.  I think Dan said this feature will be used in a new version of the WASTE TCL classes.
  76.  
  77. • WASTE now has a built-in click loop routine that provides default autoscrolling behavior.  Replacing the built-in click loop is still possible, of course, but wait: most applications using TextEdit or earlier versions of WASTE install a click loop callback for the sole purpose of keeping the scroll bars in sync with the text, and WASTE provides a simpler mechanism for this (i.e., the scroll callback), so from now on click loops should prove unnecessary in many cases.
  78.  
  79. • I added a WEGetLineRange call that returns the start and end offsets of a line given its line number (first line = 0).
  80.  
  81. • I added a WEUseSoup call to complement the existing WEUseStyleScrap.  Given a soup handle, this new call applies it to the selection range, much like WEUseStyleScrap does for a 'styl' handle.
  82.  
  83. New WASTE Demo application
  84.  
  85. WASTE 1.2a3 comes with a new WASTE Demo application, written in C, brought to you by John C. Daub and me (Marco).  This demo is mainly based on the pascal demo app, but with a few differences:
  86.  
  87. • John added some functionality lacking in the original code, e.g. better handling of the save command.  I plan to add more features in the future (e.g., printing).
  88.  
  89. • The demo is based on version 2.1 of the Universal Headers and it can be compiled with the STRICT_WINDOWS, STRICT_CONTROLS and STRICT_MENUS options turned on.  This required a few changes in the code.
  90.  
  91. Other Changes
  92.  
  93. • Pascal support is back.  I have included updated interface and glue files needed to use WASTE from a Pascal program.
  94.  
  95. • This version supports the Symantec C++ 8.0 compiler.  A project file for the demo app is included in the distribution.
  96.  
  97. • The WASTE.h public header file now defines the WASTE_VERSION macro as the current version of the library, in standard NumVersion format (e.g., version 1.2a3 is expressed as 0x01204003).
  98.  
  99. • WASTE now allows lines to be one pixel tall.  Previously WASTE forced the line height to be at least two pixels, even when using very small font sizes.  Thanks to Jeff Gold for suggesting this change.
  100.  
  101.  
  102. New in WASTE 1.2a2
  103.  
  104. • Switched to version 2.1 of the Universal Headers (MacOSEventModifiers is now called EventModifiers).  Version 2.0 is still supported, though.
  105.  
  106. • You can now #define variables like WASTE_DEBUG and WASTE_IC_SUPPORT in a prefix file compiled before WASTEIntf.h, if you want to override the default settings.  Previously, you had to make changes to WASTEIntf.h.  (Thanks to Dan for suggesting this.)
  107.  
  108. • Due to overwhelming popular demand, WECalText no longer redraws the text after recalculating line breaks, unless WASTE_WECALTEXT_DOES_REDRAW is #defined to TRUE when WASTE is compiled.
  109.  
  110. • Time-related quantities expressed in ticks are now declared as unsigned long rather than long, as per the Universal Headers.  Some API functions were changed accordingly.
  111.  
  112. • Worked around an obscure bug in the System whereby the Drag Manager calls _WESendFlavor with a bogus A5 world when a WASTE-generated drag ends up in a TSM floating window.  You can reproduce this bug using “HoverBar”, a shareware program.  This bug only affects 68K binaries.
  113.  
  114. • WESetStyle now accepts a new mode, weDoFaceMask, which lets you set some styles, clear other styles and leave all other styles untouched, all in a single call.  When you use this mode, the filler byte of the TextStyle record passed to WESetStyle is used as a mask which determines which styles are affected.  Here’s an example:
  115.  
  116.     TextStyle ts;
  117.     OSErr err;
  118.     
  119.     // set the bold style and clear the italic style,
  120.     // without touching any other style
  121.     ts.tsFace = bold;
  122.     ts.filler = bold + italic;
  123.     err = WESetStyle(weDoFaceMask, &ts, we);
  124.  
  125. This feature should prove useful for scripting purposes.
  126.  
  127.  
  128. New in WASTE 1.2a1
  129.  
  130. • This version is based on Dan’s C-WASTE 1.1r16.  I will no longer support the Pascal version.
  131.  
  132. • I made several changes to the source code in an attempt to remove some “pascalisms” that look a bit ugly in C.  ;-)
  133.  
  134. • Some frequently used routines in WELowLevelEditing have been slightly optimized.
  135.  
  136. • Many WASTE-based applications don’t need embedded objects, so WASTE can now be compiled without the code for supporting them: just #define WASTE_OBJECTS to 0 in WASTEIntf.h.
  137. The API will remain the same, with the following exceptions:
  138.   - The tsObject field of the WERunInfo record returned by WEGetRunInfo will be undefined, so your app should ignore it.
  139.   - WASTE will ignore the hSoup parameter in WECopyRange and WEInsert, so pass NULL in hSoup.
  140.   - Routines like WEInsertObject, WEInstallObjectHandler, etc. won’t be compiled, so attempts to use them will result in link errors.
  141.  
  142. • It is now safe to pass NULL in the edge parameter of WEGetOffset if you don’t want the value returned.
  143.  
  144. • Ditto for the redoFlag parameter of WEGetUndoInfo.
  145.  
  146. • On PPC systems, WENew now uses a different strategy for determining if a double-byte script system is installed, since the WorldScript Power Adapted breaks the usual check for smDoubleByte.  I haven’t checked if this works, though.
  147.  
  148. • On PPC systems, WENew makes sure that the address of NewDrag is non-zero before assuming that the Drag Manager is available.
  149.  
  150. • WESetStyle now accepts two extra flags in the mode parameter, that allow you to change the font in a script-sensitive manner.  This feature has not been thoroughly tested yet.  Thanks to Jonathan Kew for providing the code.
  151.  
  152. • You can now supply an optional “streaming” object handler that WASTE will use to get “flat” data from an object to be written to the Clipboard, to a drag or to a soup.  This is an untested experimental feature that may change in future versions.
  153.  
  154. • Operations involving heavily styled text should now be significantly faster.  Previously WASTE would call the Font Manager routine GetFontInfo once for each style run when applying a style scrap.  The Metrowerks Profiler revealed that this call is very time consuming, so now GetFontInfo is only called for new styles that aren’t used anywhere else in the text.